#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "biblioteca.h"

int AFDOperadores(char string[]){
	int estado = 0, cont = 0;//estado inicial em 0
	char c;
	char token[3];
	
	
	//os estados finais são de 2 pra cima, exceto 5 e 13.
	while(estado < 2 || estado == 5 || estado == 13){
		if(buffer.ind_buffer > 49) encherBuffer();
		 
		c = lerChar();
		switch(estado){
			case 0:
				//configurações do AFD
				if(c == '<'){
					estado = 1;
					
				}else if(c == '>'){
					estado = 5;
				}else if(c == '='){
					estado = 6;
				}else if(c == '+'){
					estado = 7;
				}else if(c == '-'){
					estado = 8;
				}else if(c == '*'){
					estado = 9;
				}else if(c == '/'){
					estado = 10;
				}else if(c == ':'){
					estado = 13;
				}
				
				token[cont] = c;
				cont++;
				break;
			
			case 1:
				if(c == '=') {
					estado = 3;
					token[cont] = c;
					cont++;
				}else if(c == '>') {
					estado = 4;
					token[cont] = c;
					cont++;
				}else{
					estado = 2;
					buffer.ind_buffer--; //sinal que so tem o < de operador
				}
				
				break;
				
			case 5:
				if(c == '=') {
					estado = 11;
					token[cont] = c;
					cont++;
				}else{
					estado = 12;
					buffer.ind_buffer--; //indica que so tem o operador >
				}
				
				break;
				
			case 13:
				if(c == '='){
					estado = 14;
					token[cont] = c;
					cont++;
				}else{
					estado = 14;
                    token[cont] = c;
                    //cont++;
                    buffer.ind_buffer--; //indica que tem apenas o operador :
                  //  printf("Token => %s \n", token);
				}
				break;
		}
		
	}
	
	token[cont] = '\0';
	//cont++;
    strcpy(string, token);
	fprintf(saida,"Operador %s Identificado\n",token);
	return 1;
}
